package estratégia;

import entidades.Rectangulo;
import entidades.TelhaBase;
import entidades.util.Grelha;
import entidades.util.LinhaDaGrelha;
import sistema.Sistema;

/**
 * Trabalho DAS - 2014/2015
 * @author a21210380, a21190325, a21210392
 */
public class MoverGrelha implements IMoverEstrategia {
    private LinhaDaGrelha linhaDaGrelha = null;
    
    public MoverGrelha() {
        Sistema.getInstance().getGrelha().setVisible(true);
    }

    @Override
    public void mover(TelhaBase telha, float x, float y) {
        Grelha grelha = Sistema.getInstance().getGrelha();
        Rectangulo contem = null;
        if(linhaDaGrelha == null) {
            linhaDaGrelha = grelha.contem(x, y);
        } else {
            contem = linhaDaGrelha.contem(x, y);
            if(contem == null) {
                linhaDaGrelha.selecionar(false);
                linhaDaGrelha = grelha.contem(x, y);
                if(linhaDaGrelha != null) {
                    contem = linhaDaGrelha.contem(x, y);
                }
            }
        }
        
        if(linhaDaGrelha != null) {
            if(contem != null) {
                linhaDaGrelha.selecionar(true);
                if(linhaDaGrelha.getOrientacao() == LinhaDaGrelha.Orientacao.Horizontal) {
                    y = linhaDaGrelha.getInicio().getY();
                } else {
                    x = linhaDaGrelha.getInicio().getX();
                    
                }
            }
        }
        
        telha.mover(x, y);
    }

}
